package reflect.initMethod;

/**
 * 获取Class对象的三种方法
 * 1、Object --> getClass()
 * 2、任何数据类型都有一个“静态”的class属性
 * 3、通过Class类的静态方法：forName(String className)常用
 */

public class Reflection {
    public static void main(String[] args) {
        // 第一种获取Class对象
        Student stu1 = new Student();       // new产生一个Student对象和Class对象
        Class stuClass1 = stu1.getClass();   // 获取Class对象
        System.out.println(stuClass1.getName());

        // 第二种获取Class对象
        Class stuClass2 = Student.class;
        System.out.println(stuClass1 == stuClass2); //判断第一种获取方式和第二种是否为同一个

        // 第三种获取Class对象
        try {
            Class stuClass3 = Class.forName("reflect.initMethod.Student");
            System.out.println(stuClass3 == stuClass2); //判断第二种获取方式和第三种是否为同一个
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
}
